//    Copyright (C) Kherty.  All rights reserved.
#region

using System.Windows.Controls;
using System.Windows.Data;

#endregion

namespace OpenLS.Drawing.UI.Internals
{
    public static class DrawingConverters
    {
        private static ToGeometryConverter _ToGeometryConverter = new ToGeometryConverter();
        public static IMultiValueConverter ToGeometryConverter { get { return _ToGeometryConverter; } }
        private static ToGeometryConverter _ToArrowGeometryConverter = new ToGeometryConverter(){Arrows = true};
        public static IMultiValueConverter ToArrowGeometryConverter { get { return _ToArrowGeometryConverter; } }
        private static IValueConverter _isOfTypeConverter = new IsOfTypeConverter();
        public static IValueConverter IsOfTypeConverter { get { return _isOfTypeConverter; } }
        private static readonly BooleanToVisibilityConverter _booleanToVisibilityConverter =
            new BooleanToVisibilityConverter();

        private static readonly ColorBaseToBrushConverter _colorBaseToBrushConverter = new ColorBaseToBrushConverter();
        private static readonly EffectConverter _effectConverter = new EffectConverter();
        private static readonly EnumEnumerator _enumEnumerator = new EnumEnumerator();
        private static readonly EnumToNameConverter _enumToNameConverter = new EnumToNameConverter();

        private static readonly FillPropertiesToBrushConverter _fillPropertiesToBrushConverter =
            new FillPropertiesToBrushConverter();

        private static readonly LineCapConverter _lineCapConverter = new LineCapConverter();

        private static readonly LineFillPropertiesToBrushConverter _lineFillPropertiesToBrushConverter =
            new LineFillPropertiesToBrushConverter();

        private static readonly PresetLineDashValueToStrokeDashArrayConverter
            _presetLineDashValueToStrokeDashArrayConverter =
                new PresetLineDashValueToStrokeDashArrayConverter();

        private static readonly ThemeToGroupedFontsConverter _themeToGroupedFontConverter =
            new ThemeToGroupedFontsConverter();

        public static IValueConverter ThemeToGroupedFontsConverter
        {
            get { return _themeToGroupedFontConverter; }
        }

        public static IValueConverter PresetLineDashValueToStrokeDashArrayConverter
        {
            get { return _presetLineDashValueToStrokeDashArrayConverter; }
        }

        public static IValueConverter LineCapConverter
        {
            get { return _lineCapConverter; }
        }

        public static IValueConverter EnumToNameConverter
        {
            get { return _enumToNameConverter; }
        }

        public static IValueConverter EnumEnumerator
        {
            get { return _enumEnumerator; }
        }

        public static BooleanToVisibilityConverter BooleanToVisibilityConverter
        {
            get { return _booleanToVisibilityConverter; }
        }

        public static ColorBaseToBrushConverter ColorBaseToBrushConverter
        {
            get { return _colorBaseToBrushConverter; }
        }

        public static LineFillPropertiesToBrushConverter LineFillPropertiesToBrushConverter
        {
            get { return _lineFillPropertiesToBrushConverter; }
        }

        public static FillPropertiesToBrushConverter FillPropertiesToBrushConverter
        {
            get { return _fillPropertiesToBrushConverter; }
        }

        public static IMultiValueConverter EffectConverter
        {
            get { return _effectConverter; }
        }
    }
}